/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import java.util.ArrayList;

import javax.swing.tree.DefaultMutableTreeNode;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa los argumentos
 */
public class Argumentos {

//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Atributo que contiene la lista de argumentos
	 */
	private ArrayList<Argumento> argumentos;
	
//	-------------------------------------------------------------------------------------------------
//	CONSTRUCTOR
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Constructor que permite crear argumentos
	 * @param argumentos. Lista de argumentos
	 */
	public Argumentos(ArrayList<Argumento> argumentos) {
		super();
		this.argumentos = argumentos;
	}
	
//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	

	public String getJavaCode(){
		String retornable = "";
		
		if(argumentos != null && argumentos.size() != 0)
			retornable += argumentos.get(0).getJavaCode();
			
		for(int i = 1; i < argumentos.size(); i++)
			retornable += ", "+argumentos.get(i).getJavaCode();
		
		return retornable;
	}
	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public DefaultMutableTreeNode getArbolVisual(){
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Argumentos");
		
		for (Argumento arg : argumentos) {
			miRaiz.add(arg.getArbolVisual());
		}
		
		return miRaiz;
	}
	
//	-------------------------------------------------------------------------------------------------
//	Getters & Setters
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Metodo que nos retorna el valor de argumentos
	 * @return  argumentos. Valor retornado
	 */
	public ArrayList<Argumento> getArgumentos() {
		return argumentos;
	}

	/**
	 * Metodo que permite asignar el valor de argumentos
	 * @param argumentos. Valor a asignar argumentos
	 */
	public void setArgumentos(ArrayList<Argumento> argumentos) {
		this.argumentos = argumentos;
	}
}
